Many computing devices can run multiple programs concurrently, some being used by the user and others running in the background or ready to be used by the user. Running multiple programs concurrently typically allows the user to quickly switch between programs that he or she desires to use, but is not without its problems. One such problem is that these multiple programs oftentimes include programs running in the background that provide little if any value to the user, and are not likely to be used anytime soon by the user. These programs can use significant amounts of resources (such as processor time, memory, etc.), which can lead to using energy unnecessarily and decreased battery life for battery powered computing devices. However preventing multiple programs from running concurrently can decrease responsiveness and functionality that users expect due to the need to re-start the programs.